/* c01/ejemplo-06.c
Redimensionamiento de la ventana en SDL
*/
#include <SDL/SDL.h>

int main(void){
	SDL_Surface *pantalla = NULL;
	SDL_Event evento;
	int ANCHO = 400, ALTO = 400;
	int PROFUNDIDAD_COLOR = 16;
	int corriendo = 1;

	if (SDL_Init(SDL_INIT_VIDEO) < 0){
		printf("Error al iniciar SDL: %s\n", SDL_GetError());
		exit(1);
	}
	atexit(SDL_Quit);

	pantalla = SDL_SetVideoMode(ANCHO, ANCHO, 0, SDL_SWSURFACE|SDL_RESIZABLE);
	if (pantalla == NULL){
		printf("Error al inicializar el modo de video: '%s'\n", SDL_GetError());
		exit(1);
	}

	SDL_WM_SetCaption("Prueba de redimensionamiento", NULL);

	while(corriendo) {
		while(SDL_PollEvent(&evento)) {
			switch(evento.type) {
				/*
					Consultar el archivo:
					/usr/include/SDL/SDL_events.h
					Allí se encuentra la definición de la unión
					'SDL_Event'.	
				*/
				case SDL_VIDEORESIZE:
					//Redimensionar la pantalla, no hace falta liberar la
					//anterior
					pantalla = SDL_SetVideoMode(evento.resize.w, evento.resize.h,
						PROFUNDIDAD_COLOR, SDL_SWSURFACE|SDL_RESIZABLE);
					if (pantalla == NULL) {
						printf("Error al redimensionar la pantalla: '%s'\n", SDL_GetError());
						exit(1);
					}
					printf("La ventana se ha redimensionado de %dx%d pixeles a %dx%d\n",
						ANCHO, ALTO, evento.resize.w, evento.resize.h);
					ANCHO = evento.resize.w; ALTO = evento.resize.h;
					//Aquí habría que redibujar lo que se estaba mostrando
					//ya que 'pantalla' aparece borrada (en negro).
					break;
				case SDL_QUIT:
					corriendo = 0;
					break;
			}
		}
	}
	return 0;
}
